package com.info.zhiduoduo.pay.sdk.zhaoshangbank.model.common.pay;

import com.info.zhiduoduo.pay.formbean.zhaoshangbankpay.ZhaoShangAgentPayFormBean;
import com.info.zhiduoduo.repository.entity.pay.PaymentMerchant;

import java.util.ArrayList;
import java.util.List;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

@Data
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true)
public class SummaryInfo {

	/** 业务参考号 */
	private String yurref;
	/** 付方分行号 */
	private String bbknbr;
	/** 付方账号 */
	private String payacc;
	/** 交易代码 */
	private String bustya;
	/** 交易摘要 */
	private String trxrmk;
	/** 个性化短信内容 */
	private String ntfinf;
	/** 批次开始标志 */
	private String begtag;   //必须为’Y’或’N’，’Y’表示批次开始，续传批次固定赋值为’N’
	/** 批次结束标志 */
	private String endtag;   //必须为’Y’或’N’，’Y’表示批次结束，非结束批次固定赋值为’N’
	/** 总金额 */
	private String ttlamt;   //批次总金额，代发代扣系统要求第一次就要必输
	/** 总笔数 */
	private String ttlcnt;   //批次总笔数，代发代扣系统要求第一次就要必输
	/** 本次金额 */
	private String curamt;
	/** 本次笔数 */
	private String curcnt;
	/** 总次数 */
	private String ttlnum;   //该批次数据计划分多少次上传完，代发代扣系统要求第一次就要必输
	/** 记账子单元编号 */
	private String jzbnbr;
	/** 流程实例号 */
	private String reqnbr;   //第一次上传时必须为空；续传时不能为空，所有续传次数流程实例号必须为同一个；主机校验该字段值与批次开始、结束标志的匹配性
	/** 期望日 */
	private String eptdat;   //默认为当前日期
	/** 期望时间 */
	private String epttim;   //默认为“000000”
	/** 网银审批标志 */
	private String grtflg;

	public static List<SummaryInfo> ofList(ZhaoShangAgentPayFormBean formBean, PaymentMerchant paymentMerchant){
		List<SummaryInfo> infoList = new ArrayList<>();
		SummaryInfo summaryInfo = new SummaryInfo()
				.setYurref(formBean.getTradeNo())
				.setBbknbr(paymentMerchant.getBranchNumber())
				.setPayacc(paymentMerchant.getBankCard())
				.setBustya(paymentMerchant.getTransactionCode())
				.setTrxrmk(formBean.getDescribe())
				.setBegtag("Y")
				.setEndtag("Y")
				.setTtlamt(formBean.getAmount().toString())
				.setTtlcnt("1")
				.setCuramt(formBean.getAmount().toString())
				.setCurcnt("1")
				.setTtlnum("1");
		infoList.add(summaryInfo);
		return infoList;
	}

}
